<?php

namespace App\Models\Product;

// 引入模块
use Illuminate\Database\Eloquent\Model;
use App\Traits\SerializeDate;

/**
 * 订单数据模型
 */
class Order extends Model
{
    use SerializeDate;
    
    // 设置当前模型对应的完整数据表名称
    protected $table = 'order';

    /**
     * 模型日期的存储格式
     * 时间戳
     * @var string
     */
    protected $dateFormat = 'U';

    //允许批量赋值
    protected $guarded = [];

    // 定义创建时间的字段
    const CREATED_AT = 'createtime';

    const UPDATED_AT = null;

    const DELETED_AT = 'deletetime';

    protected $appends = [
        'status_text', // 订单状态
        'depot_status', // 退货订单
    ];

    protected $casts = [
        'createtime'   => 'datetime:Y-m-d H:i:s',
        'deletetime'   => 'datetime:Y-m-d H:i:s',
    ];

    // 订单状态
    public function getStatusTextAttribute($value)
    {
        // empty 判断当前变量是否为空, 为真表示变量是空 is_numeric()检测变量是否为数字或数字字符串
        $status = (!is_numeric($this->attributes['status']) == true && empty($this->attributes['status'])) ?  null : $this->attributes['status'];
        switch ($status) {
            case '0':
                return "待支付";
                break;
            case '1':
                return "待发货";
                break;
            case '2':
                return "待收货";
                break;
            case '3':
                return "待评价";
                break;
            case '4':
                return "已完结";
                break;
            case '-1':
                return "仅退款";
                break;
            case '-2':
                return "退款退货";
                break;
            case '-3':
                return "售后中";
                break;
            case '-4':
                return "退货成功";
                break;
            case '-5':
                return "退货失败";
                break;
        }
    }

    // 判断是否已填了退货的物流信息
    public function getDepotStatusAttribute() {
        // 获取地区模型
        $Back = new \App\Models\Depot\Back();

        $ordercode = $this->attributes['code'] ?? '';

        $res = $Back->where('ordercode', $ordercode)->first();

        if($res){
            return true;
        }

        return false;

    }

    // 收货地址
    public function address()
    {
        return  $this->belongsTo('App\Models\Business\Address', 'businessaddrid', 'id');
    }

    // 物流公司
    public function express()
    {
        return  $this->belongsTo('App\Models\Expressquery', 'expressid', 'id');
    }

    // 用户的模型
    public function business()
    {
        return  $this->belongsTo('App\Models\Business\Business', 'busid', 'id');
    }
}
